package br.ucb.antares.bean;


import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import br.ucb.antares.HIB.AutorizacaoHIB;
import br.ucb.antares.HIB.ClienteHIB;
import br.ucb.antares.entidade.Autorizacao;
import br.ucb.antares.entidade.Cliente;
import br.ucb.antares.interfaces.Bean;
import br.ucb.antares.log4j.ClienteLog;
import br.ucb.antares.validacao.Validacao;


@ManagedBean
public class ClienteBean implements Bean<Cliente> {
	private Cliente cliente ;
	private List<Cliente> clientes;
	private ClienteHIB clienteHIB;
	private List<Cliente> filtroCliente;
	private ClienteLog clienteLog = new ClienteLog();
	
	
	public ClienteBean() {
		ClienteHIB clienteHIB = new ClienteHIB();
		setCliente(new Cliente());
		setClientes(clienteHIB.listar());
	}
	
	public int getQuantidade(){
		return getClientes().size();
	}
	
	public Cliente getCliente() {
		return cliente;
	}
	
public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public List<Cliente> getClientes() {
		return clientes;
	}

	public void setClientes(List<Cliente> clientes) {
		this.clientes = clientes;
	}

	public ClienteHIB getClienteHIB() {
		return clienteHIB;
	}

	public void setClienteHIB(ClienteHIB clienteHIB) {
		this.clienteHIB = clienteHIB;
	}
	
	
	
	public List<Cliente> getFiltroCliente() {
		return filtroCliente;
	}

	public void setFiltroCliente(List<Cliente> filtroCliente) {
		this.filtroCliente = filtroCliente;
	}

	@Override
	public String salvar(){
		if(Validacao.validaEmail(cliente.getEmail()) ||Validacao.validaCPF(cliente.getCpf()))
			return"cadAltUser.xhtml";
		cliente.getCpf();
		setClienteHIB(new ClienteHIB());
		getClienteHIB().salvar(getCliente());
		AutorizacaoHIB autorizacaoHIB = new AutorizacaoHIB();
		Cliente cliente = getClienteHIB().consultar(getCliente().getCpf());
		autorizacaoHIB.salvar(new Autorizacao(cliente , "user", cliente.getEmail() ));
		clienteLog.logCadastrar(cliente);
		return "listOrfeta.xhtml";
	}

	@Override
	public String excluir() {
		setClienteHIB(new ClienteHIB());
		getClienteHIB().excluir(getCliente());
		clienteLog.logExcluir(cliente);
		return "listOrfeta.xhtml";
	}

	@Override
	public String listar() {
		setClienteHIB(new ClienteHIB());
		setClientes(getClienteHIB().listar());
		return "sucesso";
	}

	@Override
	public String consultar() {
		setClienteHIB(new ClienteHIB());
		setCliente(getClienteHIB().consultar(getCliente().getId()));
		return "sucesso";
	}

	public String sair() {  		
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        HttpSession session = request.getSession();
        session.invalidate();
    	return "listOrfeta.xhtml.xhtml";
	}
	
	
}
